1. Field of the Invention
Embodiments of the present invention relate generally to computer processing and, more specifically, to a technique for improved math processing by detection of elementary valued operands.
2. Description of the Related Art
In computer systems, in general, and in graphics processing units (GPUs), in particular, a great number of arithmetic operations are typically performed. A minimal element of floating point arithmetic is called a fused floating point multiply-add (FFMA), which performs the function of multiplying two inputs and adding a third input to the resulting product. Frequently, one or more of the operands input to a math unit have elementary values such as zero or 1.0. When these operands occur, the math operation becomes reasonably trivial, in that zero times any number is zero and 1.0 times any number is that same number. Further, instances can occur where operands, though not equal to zero, are near enough to zero to render the result effectively zero. Similarly, instances occur where an operand, though not equal to 1.0, are near enough to 1.0 to render the result effectively a multiplication by 1.0. In conventional systems, arithmetic operations are typically performed on input operands without regard to the occurrence of these elementary values.
One drawback to the above approach is that the full dynamic power of the multiply-add operation is incurred when elementary operands occur. In addition, the full cycle time of the multiply add is incurred. Another drawback is that, when math processing results of zero occur at the register file level, essentially all further math operations for that register become trivial. When math processing results of zero occur at the register file level, performing further math operations at the register file level is arguably unnecessary and incurs needless power and cycle time costs.
Accordingly, what is needed in the art is a more effective technique for detecting the occurrence of elementary valued operands and implementing appropriately simplified math processing.